当前位置:  开发笔记 > 编程语言 > 正文

你能根据`Monads`来定义`Comonads`吗?

如何解决《你能根据`Monads`来定义`Comonads`吗?》经验,为你挑选了0个好方法。

好吧,让我们说你有类型

newtype Dual f a = Dual {dual :: forall r. f(a -> r)->r}

事实证明,什么时候f是Comonad,Dual f是Monad(有趣的运动).它是否相反?

您可以定义fmap ab (Dual da) = Dual $ \fb -> da $ fmap (. ab) fbextract (Dual da) = da $ return id,但我不知道如何定义duplicateextend.

这甚至可能吗?如果没有,那么证据不存在(是否有一个特定的Monad m,你可以证明Dual m它不是一个comonad)?

一些观察: Dual IO a基本上Void(并且Const Void是有效的Comonad). Dual m aMonadPlus m Void(只使用dual mzero). Dual ReaderEnv. Dual WriterTraced. Dual State是的Store,我想.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有